#include"pthread.hpp"
#include<unordered_map>
#include<memory>
#define NUM 10

void count(int max)
{
    for(int i=0;i<max;i++)
    {
        std::cout << "i=" << i << std::endl;
        sleep(1);
    }
}

int main()
{
    thr::Thread<int> t(count,10);

    t.stat();
 
    t.join();

}



// //智能指针
// typedef std::shared_ptr<thr::Thread> shared_ptr_t;

// int main()
// {
//     //有了线程对象后，就可以对所有线程进行管理了，先描述，再组织

//     //左边是名称，右边是智能指针
//     std::unordered_map<std::string,shared_ptr_t> threads;
//     //如果我要创建多线程呢？
//     for(int i=0;i < NUM;i++)
//     {
//         shared_ptr_t t = std::make_shared<thr::Thread>([](){
//             while(true)
//             {
//                 std::cout << "hello bit" << std::endl;
//                 sleep(1);
//             }
//         });
//         threads[t->Name()] = t;
//     }
//     //所有线程启动
//     for(auto& i:threads)
//     {
//         i.second->stat();
//     }
//     //等待所有线程
//     for(auto& i:threads)
//     {
//         i.second->join();
//     }

//     // thr::Thread t([](){
//     //     while(true)
//     //     {
//     //         std::cout << "hello bit" << std::endl;
//     //         sleep(1);
//     //     }
//     // });

//     // t.stat();
//     // std::cout << "线程名称:" << t.Name() << std::endl;
//     // sleep(5);
//     // //线程取消
//     // t.stop();
//     // std::cout << "线程取消" << std::endl;

//     // sleep(3);
//     // //等待回收线程
//     // t.join();
//     // std::cout << "等待回收线程" << std::endl;


//     return 0;
// }